package com.yww.leetcode2.linkedlist;

import com.yww.leetcode.common.ListNode;

/**
 * @author yww
 * @description 24. 两两交换链表中的节点
 * @since 2024/11/11
 */
public class SwapPairs24_04 {
    // d->1->2->3->4->5->null
    // d->2->1->4->3->5->null
    public ListNode swapPairs(ListNode head) {
        ListNode dummyHead = new ListNode(-1, null);
        dummyHead.next = head;
        ListNode cur = dummyHead;
        while (cur.next != null && cur.next.next != null) {
            // 保存第一个节点
            ListNode temp1 = cur.next;
            // 保存第三个节点
            ListNode temp2 = cur.next.next.next;
            // cur 指向第二个节点
            cur.next = cur.next.next;
            // 第二个节点指向第一个节点
            cur.next.next = temp1;
            // 第一个节点指向第三个节点
            temp1.next = temp2;
            cur = temp1;
        }
        return dummyHead.next;
    }
}
